home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: Mailbox/MIME Entity
(archive/mbox).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Mailbox/MIME Entity (archive/mbox)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| Mailbox text, 1st line "From erikb@cs.vu.nl Fri Apr 3 01:06:13 1987"
| default
| |
99%
| file
| C source text
| default
| |
98%
| file
| C source, ASCII text
| default
| |
100%
| TrID
| E-Mail message (Var. 2)
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| detectItEasy
| Format: Plain text[LF]
| default
| |
100%
| xdgMime
| application/mbox
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 20 65 72 69 | 6b 62 40 63 73 2e 76 75 |From eri|kb@cs.vu|
|00000010| 2e 6e 6c 20 46 72 69 20 | 41 70 72 20 20 33 20 30 |.nl Fri |Apr 3 0|
|00000020| 31 3a 30 36 3a 31 33 20 | 31 39 38 37 0a 50 61 74 |1:06:13 |1987.Pat|
|00000030| 68 3a 20 73 65 69 73 6d | 6f 21 6d 63 76 61 78 21 |h: seism|o!mcvax!|
|00000040| 62 6f 74 74 65 72 21 65 | 72 69 6b 62 0a 46 72 6f |botter!e|rikb.Fro|
|00000050| 6d 3a 20 65 72 69 6b 62 | 40 63 73 2e 76 75 2e 6e |m: erikb|@cs.vu.n|
|00000060| 6c 20 28 45 72 69 6b 20 | 42 61 61 6c 62 65 72 67 |l (Erik |Baalberg|
|00000070| 65 6e 29 0a 4e 65 77 73 | 67 72 6f 75 70 73 3a 20 |en).News|groups: |
|00000080| 63 6f 6d 70 2e 6f 73 2e | 6d 69 6e 69 78 0a 53 75 |comp.os.|minix.Su|
|00000090| 62 6a 65 63 74 3a 20 73 | 6f 75 72 63 65 20 66 6f |bject: s|ource fo|
|000000a0| 72 20 74 65 73 74 28 31 | 29 0a 4b 65 79 77 6f 72 |r test(1|).Keywor|
|000000b0| 64 73 3a 20 74 65 73 74 | 2c 20 73 68 65 6c 6c 20 |ds: test|, shell |
|000000c0| 73 63 72 69 70 74 0a 4d | 65 73 73 61 67 65 2d 49 |script.M|essage-I|
|000000d0| 44 3a 20 3c 31 31 33 32 | 40 62 6f 74 74 65 72 2e |D: <1132|@botter.|
|000000e0| 63 73 2e 76 75 2e 6e 6c | 3e 0a 44 61 74 65 3a 20 |cs.vu.nl|>.Date: |
|000000f0| 33 20 41 70 72 20 38 37 | 20 30 36 3a 30 36 3a 31 |3 Apr 87| 06:06:1|
|00000100| 33 20 47 4d 54 0a 53 65 | 6e 64 65 72 3a 20 72 65 |3 GMT.Se|nder: re|
|00000110| 6d 6f 74 65 40 63 73 2e | 76 75 2e 6e 6c 0a 52 65 |mote@cs.|vu.nl.Re|
|00000120| 70 6c 79 2d 54 6f 3a 20 | 65 72 69 6b 62 40 63 73 |ply-To: |erikb@cs|
|00000130| 2e 76 75 2e 6e 6c 20 28 | 45 72 69 6b 20 42 61 61 |.vu.nl (|Erik Baa|
|00000140| 6c 62 65 72 67 65 6e 29 | 0a 44 69 73 74 72 69 62 |lbergen)|.Distrib|
|00000150| 75 74 69 6f 6e 3a 20 77 | 6f 72 6c 64 0a 4f 72 67 |ution: w|orld.Org|
|00000160| 61 6e 69 7a 61 74 69 6f | 6e 3a 20 56 2e 55 2e 20 |anizatio|n: V.U. |
|00000170| 49 6e 66 6f 72 6d 61 74 | 69 63 61 2c 20 41 6d 73 |Informat|ica, Ams|
|00000180| 74 65 72 64 61 6d 0a 4c | 69 6e 65 73 3a 20 32 34 |terdam.L|ines: 24|
|00000190| 34 0a 0a 48 65 72 65 27 | 73 20 74 68 65 20 73 6f |4..Here'|s the so|
|000001a0| 75 72 63 65 20 66 6f 72 | 20 61 20 76 65 72 73 69 |urce for| a versi|
|000001b0| 6f 6e 20 37 2d 6c 69 6b | 65 20 74 65 73 74 2e 20 |on 7-lik|e test. |
|000001c0| 28 53 65 65 20 55 4e 49 | 58 20 76 37 20 6d 61 6e |(See UNI|X v7 man|
|000001d0| 75 61 6c 2c 20 74 65 73 | 74 28 31 29 29 2e 0a 49 |ual, tes|t(1))..I|
|000001e0| 20 77 72 6f 74 65 20 74 | 68 69 73 20 70 72 6f 67 | wrote t|his prog|
|000001f0| 72 61 6d 20 66 72 6f 6d | 20 73 63 72 61 74 63 68 |ram from| scratch|
|00000200| 20 73 6f 20 74 68 65 72 | 65 20 73 68 6f 75 6c 64 | so ther|e should|
|00000210| 20 62 65 20 6e 6f 20 63 | 6f 70 79 72 69 67 68 74 | be no c|opyright|
|00000220| 20 70 72 6f 62 6c 65 6d | 73 2e 0a 49 74 20 69 73 | problem|s..It is|
|00000230| 20 74 65 73 74 65 64 20 | 6f 6e 20 4d 69 6e 69 78 | tested |on Minix|
|00000240| 2e 20 43 6f 6d 70 69 6c | 65 20 77 69 74 68 20 63 |. Compil|e with c|
|00000250| 63 20 61 6e 64 20 73 65 | 65 20 68 6f 77 20 69 74 |c and se|e how it|
|00000260| 20 67 6f 65 73 21 0a 50 | 6c 65 61 73 65 20 72 65 | goes!.P|lease re|
|00000270| 70 6f 72 74 20 62 75 67 | 73 20 61 6e 64 20 73 75 |port bug|s and su|
|00000280| 67 67 65 73 74 69 6f 6e | 73 20 74 6f 20 65 72 69 |ggestion|s to eri|
|00000290| 6b 62 40 63 73 2e 76 75 | 2e 6e 6c 2e 0a 0a 45 72 |kb@cs.vu|.nl...Er|
|000002a0| 69 6b 20 42 61 61 6c 62 | 65 72 67 65 6e 0a 2d 2d |ik Baalb|ergen.--|
|000002b0| 20 63 75 74 20 68 65 72 | 65 20 2d 2d 0a 2f 2a 20 | cut her|e --./* |
|000002c0| 74 65 73 74 28 31 29 3b | 20 76 65 72 73 69 6f 6e |test(1);| version|
|000002d0| 20 37 2d 6c 69 6b 65 20 | 20 2d 2d 20 20 61 75 74 | 7-like | -- aut|
|000002e0| 68 6f 72 20 45 72 69 6b | 20 42 61 61 6c 62 65 72 |hor Erik| Baalber|
|000002f0| 67 65 6e 20 2a 2f 0a 23 | 69 6e 63 6c 75 64 65 20 |gen */.#|include |
|00000300| 3c 73 79 73 2f 74 79 70 | 65 73 2e 68 3e 0a 23 69 |<sys/typ|es.h>.#i|
|00000310| 6e 63 6c 75 64 65 20 3c | 73 79 73 2f 73 74 61 74 |nclude <|sys/stat|
|00000320| 2e 68 3e 0a 0a 2f 2a 20 | 74 65 73 74 28 31 29 20 |.h>../* |test(1) |
|00000330| 61 63 63 65 70 74 73 20 | 74 68 65 20 66 6f 6c 6c |accepts |the foll|
|00000340| 6f 77 69 6e 67 20 67 72 | 61 6d 6d 61 72 3a 0a 09 |owing gr|ammar:..|
|00000350| 65 78 70 72 09 3a 3a 3d | 20 62 65 78 70 72 20 7c |expr.::=| bexpr ||
|00000360| 20 62 65 78 70 72 20 22 | 2d 6f 22 20 65 78 70 72 | bexpr "|-o" expr|
|00000370| 20 3b 0a 09 62 65 78 70 | 72 09 3a 3a 3d 20 70 72 | ;..bexp|r.::= pr|
|00000380| 69 6d 61 72 79 20 7c 20 | 70 72 69 6d 61 72 79 20 |imary | |primary |
|00000390| 22 2d 61 22 20 62 65 78 | 70 72 20 3b 0a 09 70 72 |"-a" bex|pr ;..pr|
|000003a0| 69 6d 61 72 79 09 3a 3a | 3d 20 75 6e 61 72 79 2d |imary.::|= unary-|
|000003b0| 6f 70 65 72 61 74 6f 72 | 20 6f 70 65 72 61 6e 64 |operator| operand|
|000003c0| 0a 09 09 7c 20 6f 70 65 | 72 61 6e 64 20 62 69 6e |...| ope|rand bin|
|000003d0| 61 72 79 2d 6f 70 65 72 | 61 74 6f 72 20 6f 70 65 |ary-oper|ator ope|
|000003e0| 72 61 6e 64 0a 09 09 7c | 20 6f 70 65 72 61 6e 64 |rand...|| operand|
|000003f0| 0a 09 09 7c 20 22 28 22 | 20 65 78 70 72 20 22 29 |...| "("| expr ")|
|00000400| 22 0a 09 09 7c 20 22 21 | 22 20 65 78 70 72 0a 09 |"...| "!|" expr..|
|00000410| 09 3b 0a 09 75 6e 61 72 | 79 2d 6f 70 65 72 61 74 |.;..unar|y-operat|
|00000420| 6f 72 20 3a 3a 3d 20 22 | 2d 72 22 7c 22 2d 77 22 |or ::= "|-r"|"-w"|
|00000430| 7c 22 2d 66 22 7c 22 2d | 64 22 7c 22 2d 73 22 7c ||"-f"|"-|d"|"-s"||
|00000440| 22 2d 74 22 7c 22 2d 7a | 22 7c 22 2d 6e 22 3b 0a |"-t"|"-z|"|"-n";.|
|00000450| 09 62 69 6e 61 72 79 2d | 6f 70 65 72 61 74 6f 72 |.binary-|operator|
|00000460| 20 3a 3a 3d 20 22 3d 22 | 7c 22 21 3d 22 7c 22 2d | ::= "="||"!="|"-|
|00000470| 65 71 22 7c 22 2d 6e 65 | 22 7c 22 2d 67 65 22 7c |eq"|"-ne|"|"-ge"||
|00000480| 22 2d 67 74 22 7c 22 2d | 6c 65 22 7c 22 2d 6c 74 |"-gt"|"-|le"|"-lt|
|00000490| 22 3b 0a 09 6f 70 65 72 | 61 6e 64 20 3a 3a 3d 20 |";..oper|and ::= |
|000004a0| 3c 61 6e 79 20 6c 65 67 | 61 6c 20 55 4e 49 58 20 |<any leg|al UNIX |
|000004b0| 66 69 6c 65 20 6e 61 6d | 65 3e 0a 2a 2f 0a 0a 23 |file nam|e>.*/..#|
|000004c0| 64 65 66 69 6e 65 20 45 | 4f 49 09 30 0a 23 64 65 |define E|OI.0.#de|
|000004d0| 66 69 6e 65 20 46 49 4c | 52 44 09 31 0a 23 64 65 |fine FIL|RD.1.#de|
|000004e0| 66 69 6e 65 20 46 49 4c | 57 52 09 32 0a 23 64 65 |fine FIL|WR.2.#de|
|000004f0| 66 69 6e 65 20 46 49 4c | 4e 44 09 33 0a 23 64 65 |fine FIL|ND.3.#de|
|00000500| 66 69 6e 65 20 46 49 4c | 49 44 09 34 0a 23 64 65 |fine FIL|ID.4.#de|
|00000510| 66 69 6e 65 20 46 49 4c | 47 5a 09 35 0a 23 64 65 |fine FIL|GZ.5.#de|
|00000520| 66 69 6e 65 20 46 49 4c | 54 54 09 36 0a 23 64 65 |fine FIL|TT.6.#de|
|00000530| 66 69 6e 65 20 53 54 5a | 45 52 09 37 0a 23 64 65 |fine STZ|ER.7.#de|
|00000540| 66 69 6e 65 20 53 54 4e | 5a 45 09 38 0a 23 64 65 |fine STN|ZE.8.#de|
|00000550| 66 69 6e 65 20 53 54 45 | 51 4c 09 39 0a 23 64 65 |fine STE|QL.9.#de|
|00000560| 66 69 6e 65 20 53 54 4e | 45 51 09 31 30 0a 23 64 |fine STN|EQ.10.#d|
|00000570| 65 66 69 6e 65 20 49 4e | 54 45 51 09 31 31 0a 23 |efine IN|TEQ.11.#|
|00000580| 64 65 66 69 6e 65 20 49 | 4e 54 4e 45 09 31 32 0a |define I|NTNE.12.|
|00000590| 23 64 65 66 69 6e 65 20 | 49 4e 54 47 45 09 31 33 |#define |INTGE.13|
|000005a0| 0a 23 64 65 66 69 6e 65 | 20 49 4e 54 47 54 09 31 |.#define| INTGT.1|
|000005b0| 34 0a 23 64 65 66 69 6e | 65 20 49 4e 54 4c 45 09 |4.#defin|e INTLE.|
|000005c0| 31 35 0a 23 64 65 66 69 | 6e 65 20 49 4e 54 4c 54 |15.#defi|ne INTLT|
|000005d0| 09 31 36 0a 23 64 65 66 | 69 6e 65 20 55 4e 45 47 |.16.#def|ine UNEG|
|000005e0| 4e 09 31 37 0a 23 64 65 | 66 69 6e 65 20 42 41 4e |N.17.#de|fine BAN|
|000005f0| 44 09 31 38 0a 23 64 65 | 66 69 6e 65 20 42 4f 52 |D.18.#de|fine BOR|
|00000600| 09 31 39 0a 23 64 65 66 | 69 6e 65 20 4c 50 41 52 |.19.#def|ine LPAR|
|00000610| 45 4e 09 32 30 0a 23 64 | 65 66 69 6e 65 20 52 50 |EN.20.#d|efine RP|
|00000620| 41 52 45 4e 09 32 31 0a | 23 64 65 66 69 6e 65 20 |AREN.21.|#define |
|00000630| 4f 50 45 52 41 4e 44 09 | 32 32 0a 0a 23 64 65 66 |OPERAND.|22..#def|
|00000640| 69 6e 65 20 55 4e 4f 50 | 09 31 0a 23 64 65 66 69 |ine UNOP|.1.#defi|
|00000650| 6e 65 20 42 49 4e 4f 50 | 09 32 0a 23 64 65 66 69 |ne BINOP|.2.#defi|
|00000660| 6e 65 20 42 55 4e 4f 50 | 09 33 0a 23 64 65 66 69 |ne BUNOP|.3.#defi|
|00000670| 6e 65 20 42 42 49 4e 4f | 50 09 34 0a 23 64 65 66 |ne BBINO|P.4.#def|
|00000680| 69 6e 65 20 50 41 52 45 | 4e 09 35 0a 0a 73 74 72 |ine PARE|N.5..str|
|00000690| 75 63 74 20 6f 70 20 7b | 0a 09 63 68 61 72 20 2a |uct op {|..char *|
|000006a0| 6f 70 5f 74 65 78 74 3b | 0a 09 73 68 6f 72 74 20 |op_text;|..short |
|000006b0| 6f 70 5f 6e 75 6d 2c 20 | 6f 70 5f 74 79 70 65 3b |op_num, |op_type;|
|000006c0| 0a 7d 20 6f 70 73 5b 5d | 20 3d 20 7b 0a 09 7b 22 |.} ops[]| = {..{"|
|000006d0| 2d 72 22 2c 20 46 49 4c | 52 44 2c 20 55 4e 4f 50 |-r", FIL|RD, UNOP|
|000006e0| 7d 2c 0a 09 7b 22 2d 77 | 22 2c 20 46 49 4c 57 52 |},..{"-w|", FILWR|
|000006f0| 2c 20 55 4e 4f 50 7d 2c | 0a 09 7b 22 2d 66 22 2c |, UNOP},|..{"-f",|
|00000700| 20 46 49 4c 4e 44 2c 20 | 55 4e 4f 50 7d 2c 0a 09 | FILND, |UNOP},..|
|00000710| 7b 22 2d 64 22 2c 20 46 | 49 4c 49 44 2c 20 55 4e |{"-d", F|ILID, UN|
|00000720| 4f 50 7d 2c 0a 09 7b 22 | 2d 73 22 2c 20 46 49 4c |OP},..{"|-s", FIL|
|00000730| 47 5a 2c 20 55 4e 4f 50 | 7d 2c 0a 09 7b 22 2d 74 |GZ, UNOP|},..{"-t|
|00000740| 22 2c 20 46 49 4c 54 54 | 2c 20 55 4e 4f 50 7d 2c |", FILTT|, UNOP},|
|00000750| 0a 09 7b 22 2d 7a 22 2c | 20 53 54 5a 45 52 2c 20 |..{"-z",| STZER, |
|00000760| 55 4e 4f 50 7d 2c 0a 09 | 7b 22 2d 6e 22 2c 20 53 |UNOP},..|{"-n", S|
|00000770| 54 4e 5a 45 2c 20 55 4e | 4f 50 7d 2c 0a 09 7b 22 |TNZE, UN|OP},..{"|
|00000780| 3d 22 2c 20 20 53 54 45 | 51 4c 2c 20 42 49 4e 4f |=", STE|QL, BINO|
|00000790| 50 7d 2c 0a 09 7b 22 21 | 3d 22 2c 20 53 54 4e 45 |P},..{"!|=", STNE|
|000007a0| 51 2c 20 42 49 4e 4f 50 | 7d 2c 0a 09 7b 22 2d 65 |Q, BINOP|},..{"-e|
|000007b0| 71 22 2c 20 49 4e 54 45 | 51 2c 20 42 49 4e 4f 50 |q", INTE|Q, BINOP|
|000007c0| 7d 2c 0a 09 7b 22 2d 6e | 65 22 2c 20 49 4e 54 4e |},..{"-n|e", INTN|
|000007d0| 45 2c 20 42 49 4e 4f 50 | 7d 2c 0a 09 7b 22 2d 67 |E, BINOP|},..{"-g|
|000007e0| 65 22 2c 20 49 4e 54 47 | 45 2c 20 42 49 4e 4f 50 |e", INTG|E, BINOP|
|000007f0| 7d 2c 0a 09 7b 22 2d 67 | 74 22 2c 20 49 4e 54 47 |},..{"-g|t", INTG|
|00000800| 54 2c 20 42 49 4e 4f 50 | 7d 2c 0a 09 7b 22 2d 6c |T, BINOP|},..{"-l|
|00000810| 65 22 2c 20 49 4e 54 4c | 45 2c 20 42 49 4e 4f 50 |e", INTL|E, BINOP|
|00000820| 7d 2c 0a 09 7b 22 2d 6c | 74 22 2c 20 49 4e 54 4c |},..{"-l|t", INTL|
|00000830| 54 2c 20 42 49 4e 4f 50 | 7d 2c 0a 09 7b 22 21 22 |T, BINOP|},..{"!"|
|00000840| 2c 20 55 4e 45 47 4e 2c | 20 42 55 4e 4f 50 7d 2c |, UNEGN,| BUNOP},|
|00000850| 0a 09 7b 22 2d 61 22 2c | 20 42 41 4e 44 2c 20 42 |..{"-a",| BAND, B|
|00000860| 42 49 4e 4f 50 7d 2c 0a | 09 7b 22 2d 6f 22 2c 20 |BINOP},.|.{"-o", |
|00000870| 42 4f 52 2c 20 42 42 49 | 4e 4f 50 7d 2c 0a 09 7b |BOR, BBI|NOP},..{|
|00000880| 22 28 22 2c 20 4c 50 41 | 52 45 4e 2c 20 50 41 52 |"(", LPA|REN, PAR|
|00000890| 45 4e 7d 2c 0a 09 7b 22 | 29 22 2c 20 52 50 41 52 |EN},..{"|)", RPAR|
|000008a0| 45 4e 2c 20 50 41 52 45 | 4e 7d 2c 0a 09 7b 30 2c |EN, PARE|N},..{0,|
|000008b0| 20 30 2c 20 30 7d 0a 7d | 3b 0a 0a 6c 6f 6e 67 20 | 0, 0}.}|;..long |
|000008c0| 6e 75 6d 28 29 3b 0a 63 | 68 61 72 20 2a 2a 69 70 |num();.c|har **ip|
|000008d0| 3b 0a 63 68 61 72 20 2a | 70 72 6f 67 3b 0a 73 74 |;.char *|prog;.st|
|000008e0| 72 75 63 74 20 6f 70 20 | 2a 69 70 5f 6f 70 3b 0a |ruct op |*ip_op;.|
|000008f0| 0a 6d 61 69 6e 28 61 72 | 67 63 2c 20 61 72 67 76 |.main(ar|gc, argv|
|00000900| 29 0a 09 63 68 61 72 20 | 2a 61 72 67 76 5b 5d 3b |)..char |*argv[];|
|00000910| 0a 7b 0a 09 70 72 6f 67 | 20 3d 20 61 72 67 76 5b |.{..prog| = argv[|
|00000920| 30 5d 3b 0a 09 69 70 20 | 3d 20 26 61 72 67 76 5b |0];..ip |= &argv[|
|00000930| 31 5d 3b 0a 09 65 78 69 | 74 28 21 28 65 78 70 72 |1];..exi|t(!(expr|
|00000940| 28 6c 65 78 28 2a 69 70 | 29 29 20 26 26 20 2a 2b |(lex(*ip|)) && *+|
|00000950| 2b 69 70 20 3d 3d 20 30 | 29 29 3b 0a 7d 0a 0a 65 |+ip == 0|));.}..e|
|00000960| 78 70 72 28 6e 29 0a 7b | 0a 09 69 6e 74 20 72 65 |xpr(n).{|..int re|
|00000970| 73 3b 0a 0a 09 69 66 20 | 28 6e 20 3d 3d 20 45 4f |s;...if |(n == EO|
|00000980| 49 29 0a 09 09 73 79 6e | 74 61 78 28 29 3b 0a 09 |I)...syn|tax();..|
|00000990| 72 65 73 20 3d 20 62 65 | 78 70 72 28 6e 29 3b 0a |res = be|xpr(n);.|
|000009a0| 09 69 66 20 28 6c 65 78 | 28 2a 2b 2b 69 70 29 20 |.if (lex|(*++ip) |
|000009b0| 3d 3d 20 42 4f 52 29 0a | 09 09 72 65 74 75 72 6e |== BOR).|..return|
|000009c0| 20 65 78 70 72 28 6c 65 | 78 28 2a 2b 2b 69 70 29 | expr(le|x(*++ip)|
|000009d0| 29 20 7c 7c 20 72 65 73 | 3b 0a 09 69 70 2d 2d 3b |) || res|;..ip--;|
|000009e0| 0a 09 72 65 74 75 72 6e | 20 72 65 73 3b 0a 7d 0a |..return| res;.}.|
|000009f0| 0a 62 65 78 70 72 28 6e | 29 0a 7b 0a 09 69 6e 74 |.bexpr(n|).{..int|
|00000a00| 20 72 65 73 3b 0a 0a 09 | 69 66 20 28 6e 20 3d 3d | res;...|if (n ==|
|00000a10| 20 45 4f 49 29 0a 09 09 | 73 79 6e 74 61 78 28 29 | EOI)...|syntax()|
|00000a20| 3b 0a 09 72 65 73 20 3d | 20 70 72 69 6d 61 72 79 |;..res =| primary|
|00000a30| 28 6e 29 3b 0a 09 69 66 | 20 28 6c 65 78 28 2a 2b |(n);..if| (lex(*+|
|00000a40| 2b 69 70 29 20 3d 3d 20 | 42 41 4e 44 29 0a 09 09 |+ip) == |BAND)...|
|00000a50| 72 65 74 75 72 6e 20 62 | 65 78 70 72 28 6c 65 78 |return b|expr(lex|
|00000a60| 28 2a 2b 2b 69 70 29 29 | 20 26 26 20 72 65 73 3b |(*++ip))| && res;|
|00000a70| 0a 09 69 70 2d 2d 3b 0a | 09 72 65 74 75 72 6e 20 |..ip--;.|.return |
|00000a80| 72 65 73 3b 0a 7d 0a 0a | 70 72 69 6d 61 72 79 28 |res;.}..|primary(|
|00000a90| 6e 29 0a 7b 0a 09 72 65 | 67 69 73 74 65 72 20 63 |n).{..re|gister c|
|00000aa0| 68 61 72 20 2a 6f 70 6e | 64 31 2c 20 2a 6f 70 6e |har *opn|d1, *opn|
|00000ab0| 64 32 3b 0a 09 69 6e 74 | 20 72 65 73 3b 0a 0a 09 |d2;..int| res;...|
|00000ac0| 69 66 20 28 6e 20 3d 3d | 20 45 4f 49 29 0a 09 09 |if (n ==| EOI)...|
|00000ad0| 73 79 6e 74 61 78 28 29 | 3b 0a 09 69 66 20 28 6e |syntax()|;..if (n|
|00000ae0| 20 3d 3d 20 55 4e 45 47 | 4e 29 0a 09 09 72 65 74 | == UNEG|N)...ret|
|00000af0| 75 72 6e 20 21 65 78 70 | 72 28 6c 65 78 28 2a 2b |urn !exp|r(lex(*+|
|00000b00| 2b 69 70 29 29 3b 0a 09 | 69 66 20 28 6e 20 3d 3d |+ip));..|if (n ==|
|00000b10| 20 4c 50 41 52 45 4e 29 | 20 7b 0a 09 09 72 65 73 | LPAREN)| {...res|
|00000b20| 20 3d 20 65 78 70 72 28 | 6c 65 78 28 2a 2b 2b 69 | = expr(|lex(*++i|
|00000b30| 70 29 29 3b 0a 09 09 69 | 66 20 28 6c 65 78 28 2a |p));...i|f (lex(*|
|00000b40| 2b 2b 69 70 29 20 21 3d | 20 52 50 41 52 45 4e 29 |++ip) !=| RPAREN)|
|00000b50| 0a 09 09 09 73 79 6e 74 | 61 78 28 29 3b 0a 09 09 |....synt|ax();...|
|00000b60| 72 65 74 75 72 6e 20 72 | 65 73 3b 0a 09 7d 0a 09 |return r|es;..}..|
|00000b70| 69 66 20 28 6e 20 3d 3d | 20 4f 50 45 52 41 4e 44 |if (n ==| OPERAND|
|00000b80| 29 20 7b 0a 09 09 6f 70 | 6e 64 31 20 3d 20 2a 69 |) {...op|nd1 = *i|
|00000b90| 70 3b 0a 09 09 28 76 6f | 69 64 29 20 6c 65 78 28 |p;...(vo|id) lex(|
|00000ba0| 2a 2b 2b 69 70 29 3b 0a | 09 09 69 66 20 28 69 70 |*++ip);.|..if (ip|
|00000bb0| 5f 6f 70 20 26 26 20 69 | 70 5f 6f 70 2d 3e 6f 70 |_op && i|p_op->op|
|00000bc0| 5f 74 79 70 65 20 3d 3d | 20 42 49 4e 4f 50 29 20 |_type ==| BINOP) |
|00000bd0| 7b 0a 09 09 09 73 74 72 | 75 63 74 20 6f 70 20 2a |{....str|uct op *|
|00000be0| 6f 70 20 3d 20 69 70 5f | 6f 70 3b 0a 0a 09 09 09 |op = ip_|op;.....|
|00000bf0| 69 66 20 28 28 6f 70 6e | 64 32 20 3d 20 2a 2b 2b |if ((opn|d2 = *++|
|00000c00| 69 70 29 20 3d 3d 20 28 | 63 68 61 72 20 2a 29 30 |ip) == (|char *)0|
|00000c10| 29 0a 09 09 09 09 73 79 | 6e 74 61 78 28 29 3b 0a |).....sy|ntax();.|
|00000c20| 09 09 09 0a 09 09 09 73 | 77 69 74 63 68 20 28 6f |.......s|witch (o|
|00000c30| 70 2d 3e 6f 70 5f 6e 75 | 6d 29 20 7b 0a 09 09 09 |p->op_nu|m) {....|
|00000c40| 63 61 73 65 20 53 54 45 | 51 4c 3a 0a 09 09 09 09 |case STE|QL:.....|
|00000c50| 72 65 74 75 72 6e 20 73 | 74 72 63 6d 70 28 6f 70 |return s|trcmp(op|
|00000c60| 6e 64 31 2c 20 6f 70 6e | 64 32 29 20 3d 3d 20 30 |nd1, opn|d2) == 0|
|00000c70| 3b 0a 09 09 09 63 61 73 | 65 20 53 54 4e 45 51 3a |;....cas|e STNEQ:|
|00000c80| 0a 09 09 09 09 72 65 74 | 75 72 6e 20 73 74 72 63 |.....ret|urn strc|
|00000c90| 6d 70 28 6f 70 6e 64 31 | 2c 20 6f 70 6e 64 32 29 |mp(opnd1|, opnd2)|
|00000ca0| 20 21 3d 20 30 3b 0a 09 | 09 09 63 61 73 65 20 49 | != 0;..|..case I|
|00000cb0| 4e 54 45 51 3a 0a 09 09 | 09 09 72 65 74 75 72 6e |NTEQ:...|..return|
|00000cc0| 20 6e 75 6d 28 6f 70 6e | 64 31 29 20 3d 3d 20 6e | num(opn|d1) == n|
|00000cd0| 75 6d 28 6f 70 6e 64 32 | 29 3b 0a 09 09 09 63 61 |um(opnd2|);....ca|
|00000ce0| 73 65 20 49 4e 54 4e 45 | 3a 0a 09 09 09 09 72 65 |se INTNE|:.....re|
|00000cf0| 74 75 72 6e 20 6e 75 6d | 28 6f 70 6e 64 31 29 20 |turn num|(opnd1) |
|00000d00| 21 3d 20 6e 75 6d 28 6f | 70 6e 64 32 29 3b 0a 09 |!= num(o|pnd2);..|
|00000d10| 09 09 63 61 73 65 20 49 | 4e 54 47 45 3a 0a 09 09 |..case I|NTGE:...|
|00000d20| 09 09 72 65 74 75 72 6e | 20 6e 75 6d 28 6f 70 6e |..return| num(opn|
|00000d30| 64 31 29 20 3e 3d 20 6e | 75 6d 28 6f 70 6e 64 32 |d1) >= n|um(opnd2|
|00000d40| 29 3b 0a 09 09 09 63 61 | 73 65 20 49 4e 54 47 54 |);....ca|se INTGT|
|00000d50| 3a 0a 09 09 09 09 72 65 | 74 75 72 6e 20 6e 75 6d |:.....re|turn num|
|00000d60| 28 6f 70 6e 64 31 29 20 | 3e 20 6e 75 6d 28 6f 70 |(opnd1) |> num(op|
|00000d70| 6e 64 32 29 3b 0a 09 09 | 09 63 61 73 65 20 49 4e |nd2);...|.case IN|
|00000d80| 54 4c 45 3a 0a 09 09 09 | 09 72 65 74 75 72 6e 20 |TLE:....|.return |
|00000d90| 6e 75 6d 28 6f 70 6e 64 | 31 29 20 3c 3d 20 6e 75 |num(opnd|1) <= nu|
|00000da0| 6d 28 6f 70 6e 64 32 29 | 3b 0a 09 09 09 63 61 73 |m(opnd2)|;....cas|
|00000db0| 65 20 49 4e 54 4c 54 3a | 0a 09 09 09 09 72 65 74 |e INTLT:|.....ret|
|00000dc0| 75 72 6e 20 6e 75 6d 28 | 6f 70 6e 64 31 29 20 3c |urn num(|opnd1) <|
|00000dd0| 20 6e 75 6d 28 6f 70 6e | 64 32 29 3b 0a 09 09 09 | num(opn|d2);....|
|00000de0| 7d 0a 09 09 7d 0a 09 09 | 69 70 2d 2d 3b 0a 09 09 |}...}...|ip--;...|
|00000df0| 72 65 74 75 72 6e 20 73 | 74 72 6c 65 6e 28 6f 70 |return s|trlen(op|
|00000e00| 6e 64 31 29 20 3e 20 30 | 3b 0a 09 7d 0a 09 2f 2a |nd1) > 0|;..}../*|
|00000e10| 20 75 6e 61 72 79 20 65 | 78 70 72 65 73 73 69 6f | unary e|xpressio|
|00000e20| 6e 20 2a 2f 0a 09 69 66 | 20 28 69 70 5f 6f 70 2d |n */..if| (ip_op-|
|00000e30| 3e 6f 70 5f 74 79 70 65 | 20 21 3d 20 55 4e 4f 50 |>op_type| != UNOP|
|00000e40| 20 7c 7c 20 2a 2b 2b 69 | 70 20 3d 3d 20 30 29 0a | || *++i|p == 0).|
|00000e50| 09 09 73 79 6e 74 61 78 | 28 29 3b 0a 09 69 66 20 |..syntax|();..if |
|00000e60| 28 6e 20 3d 3d 20 53 54 | 5a 45 52 29 0a 09 09 72 |(n == ST|ZER)...r|
|00000e70| 65 74 75 72 6e 20 73 74 | 72 6c 65 6e 28 2a 69 70 |eturn st|rlen(*ip|
|00000e80| 29 20 3d 3d 20 30 3b 0a | 09 69 66 20 28 6e 20 3d |) == 0;.|.if (n =|
|00000e90| 3d 20 53 54 4e 5a 45 29 | 0a 09 09 72 65 74 75 72 |= STNZE)|...retur|
|00000ea0| 6e 20 73 74 72 6c 65 6e | 28 2a 69 70 29 20 21 3d |n strlen|(*ip) !=|
|00000eb0| 20 30 3b 0a 09 72 65 74 | 75 72 6e 20 66 69 6c 73 | 0;..ret|urn fils|
|00000ec0| 74 61 74 28 2a 69 70 2c | 20 6e 29 3b 0a 7d 0a 0a |tat(*ip,| n);.}..|
|00000ed0| 66 69 6c 73 74 61 74 28 | 6e 6d 2c 20 6d 6f 64 65 |filstat(|nm, mode|
|00000ee0| 29 0a 09 63 68 61 72 20 | 2a 6e 6d 3b 0a 7b 0a 09 |)..char |*nm;.{..|
|00000ef0| 73 74 72 75 63 74 20 73 | 74 61 74 20 73 3b 0a 09 |struct s|tat s;..|
|00000f00| 0a 09 73 77 69 74 63 68 | 20 28 6d 6f 64 65 29 20 |..switch| (mode) |
|00000f10| 7b 0a 09 63 61 73 65 20 | 46 49 4c 52 44 3a 0a 09 |{..case |FILRD:..|
|00000f20| 09 72 65 74 75 72 6e 20 | 61 63 63 65 73 73 28 6e |.return |access(n|
|00000f30| 6d 2c 20 34 29 20 3d 3d | 20 30 3b 0a 09 63 61 73 |m, 4) ==| 0;..cas|
|00000f40| 65 20 46 49 4c 57 52 3a | 0a 09 09 72 65 74 75 72 |e FILWR:|...retur|
|00000f50| 6e 20 61 63 63 65 73 73 | 28 6e 6d 2c 20 32 29 20 |n access|(nm, 2) |
|00000f60| 3d 3d 20 30 3b 0a 09 63 | 61 73 65 20 46 49 4c 4e |== 0;..c|ase FILN|
|00000f70| 44 3a 0a 09 09 72 65 74 | 75 72 6e 20 73 74 61 74 |D:...ret|urn stat|
|00000f80| 28 6e 6d 2c 20 26 73 29 | 20 3d 3d 20 30 20 26 26 |(nm, &s)| == 0 &&|
|00000f90| 20 28 28 73 2e 73 74 5f | 6d 6f 64 65 20 26 20 53 | ((s.st_|mode & S|
|00000fa0| 5f 49 46 4d 54 29 20 21 | 3d 20 53 5f 49 46 44 49 |_IFMT) !|= S_IFDI|
|00000fb0| 52 29 3b 0a 09 63 61 73 | 65 20 46 49 4c 49 44 3a |R);..cas|e FILID:|
|00000fc0| 0a 09 09 72 65 74 75 72 | 6e 20 73 74 61 74 28 6e |...retur|n stat(n|
|00000fd0| 6d 2c 20 26 73 29 20 3d | 3d 20 30 20 26 26 20 28 |m, &s) =|= 0 && (|
|00000fe0| 28 73 2e 73 74 5f 6d 6f | 64 65 20 26 20 53 5f 49 |(s.st_mo|de & S_I|
|00000ff0| 46 4d 54 29 20 3d 3d 20 | 53 5f 49 46 44 49 52 29 |FMT) == |S_IFDIR)|
|00001000| 3b 0a 09 63 61 73 65 20 | 46 49 4c 47 5a 3a 0a 09 |;..case |FILGZ:..|
|00001010| 09 72 65 74 75 72 6e 20 | 73 74 61 74 28 6e 6d 2c |.return |stat(nm,|
|00001020| 20 26 73 29 20 3d 3d 20 | 30 20 26 26 20 28 73 2e | &s) == |0 && (s.|
|00001030| 73 74 5f 73 69 7a 65 20 | 3e 20 30 4c 29 3b 0a 09 |st_size |> 0L);..|
|00001040| 63 61 73 65 20 46 49 4c | 54 54 3a 20 2f 2a 20 6e |case FIL|TT: /* n|
|00001050| 6f 74 20 69 6d 70 6c 65 | 6d 65 6e 74 65 64 20 2a |ot imple|mented *|
|00001060| 2f 0a 09 09 73 79 6e 74 | 61 78 28 29 3b 0a 09 7d |/...synt|ax();..}|
|00001070| 0a 7d 0a 0a 69 6e 74 0a | 6c 65 78 28 73 29 0a 09 |.}..int.|lex(s)..|
|00001080| 72 65 67 69 73 74 65 72 | 20 63 68 61 72 20 2a 73 |register| char *s|
|00001090| 3b 0a 7b 0a 09 72 65 67 | 69 73 74 65 72 20 73 74 |;.{..reg|ister st|
|000010a0| 72 75 63 74 20 6f 70 20 | 2a 6f 70 20 3d 20 6f 70 |ruct op |*op = op|
|000010b0| 73 3b 0a 0a 09 69 66 20 | 28 73 20 3d 3d 20 30 29 |s;...if |(s == 0)|
|000010c0| 0a 09 09 72 65 74 75 72 | 6e 20 45 4f 49 3b 0a 09 |...retur|n EOI;..|
|000010d0| 77 68 69 6c 65 20 28 6f | 70 2d 3e 6f 70 5f 74 65 |while (o|p->op_te|
|000010e0| 78 74 29 20 7b 0a 09 09 | 69 66 20 28 73 74 72 63 |xt) {...|if (strc|
|000010f0| 6d 70 28 73 2c 20 6f 70 | 2d 3e 6f 70 5f 74 65 78 |mp(s, op|->op_tex|
|00001100| 74 29 20 3d 3d 20 30 29 | 20 7b 0a 09 09 09 69 70 |t) == 0)| {....ip|
|00001110| 5f 6f 70 20 3d 20 6f 70 | 3b 0a 09 09 09 72 65 74 |_op = op|;....ret|
|00001120| 75 72 6e 20 6f 70 2d 3e | 6f 70 5f 6e 75 6d 3b 0a |urn op->|op_num;.|
|00001130| 09 09 7d 0a 09 09 6f 70 | 2b 2b 3b 0a 09 7d 0a 09 |..}...op|++;..}..|
|00001140| 69 70 5f 6f 70 20 3d 20 | 28 73 74 72 75 63 74 20 |ip_op = |(struct |
|00001150| 6f 70 20 2a 29 30 3b 0a | 09 72 65 74 75 72 6e 20 |op *)0;.|.return |
|00001160| 4f 50 45 52 41 4e 44 3b | 0a 7d 0a 0a 6c 6f 6e 67 |OPERAND;|.}..long|
|00001170| 0a 6e 75 6d 28 73 29 0a | 09 72 65 67 69 73 74 65 |.num(s).|.registe|
|00001180| 72 20 63 68 61 72 20 2a | 73 3b 0a 7b 0a 09 6c 6f |r char *|s;.{..lo|
|00001190| 6e 67 20 6c 20 3d 20 30 | 3b 0a 09 6c 6f 6e 67 20 |ng l = 0|;..long |
|000011a0| 73 69 67 6e 20 3d 20 31 | 3b 0a 0a 09 69 66 20 28 |sign = 1|;...if (|
|000011b0| 2a 73 20 3d 3d 20 27 5c | 30 27 29 0a 09 09 73 79 |*s == '\|0')...sy|
|000011c0| 6e 74 61 78 28 29 3b 0a | 09 69 66 20 28 2a 73 20 |ntax();.|.if (*s |
|000011d0| 3d 3d 20 27 2d 27 29 20 | 7b 0a 09 09 73 69 67 6e |== '-') |{...sign|
|000011e0| 20 3d 20 2d 31 3b 0a 09 | 09 73 2b 2b 3b 0a 09 7d | = -1;..|.s++;..}|
|000011f0| 0a 09 77 68 69 6c 65 20 | 28 2a 73 20 3e 3d 20 27 |..while |(*s >= '|
|00001200| 30 27 20 26 26 20 2a 73 | 20 3c 3d 20 27 39 27 29 |0' && *s| <= '9')|
|00001210| 0a 09 09 6c 20 3d 20 6c | 20 2a 20 31 30 20 2b 20 |...l = l| * 10 + |
|00001220| 2a 73 2b 2b 20 2d 20 27 | 30 27 3b 0a 09 69 66 20 |*s++ - '|0';..if |
|00001230| 28 2a 73 20 21 3d 20 27 | 5c 30 27 29 0a 09 09 73 |(*s != '|\0')...s|
|00001240| 79 6e 74 61 78 28 29 3b | 0a 09 72 65 74 75 72 6e |yntax();|..return|
|00001250| 20 73 69 67 6e 20 2a 20 | 6c 3b 0a 7d 0a 0a 73 79 | sign * |l;.}..sy|
|00001260| 6e 74 61 78 28 29 0a 7b | 0a 09 77 72 69 74 65 28 |ntax().{|..write(|
|00001270| 32 2c 20 70 72 6f 67 2c | 20 73 74 72 6c 65 6e 28 |2, prog,| strlen(|
|00001280| 70 72 6f 67 29 29 3b 0a | 09 77 72 69 74 65 28 32 |prog));.|.write(2|
|00001290| 2c 20 22 3a 20 73 79 6e | 74 61 78 20 65 72 72 6f |, ": syn|tax erro|
|000012a0| 72 5c 6e 22 2c 20 31 35 | 29 3b 0a 09 65 78 69 74 |r\n", 15|);..exit|
|000012b0| 28 31 29 3b 0a 7d 0a 0a | 0a |(1);.}..|. |
+--------+-------------------------+-------------------------+--------+--------+